package reflect;

/**
 * @author DBX
 * @effect java反射机制
 *          反射机制是jajva的动态机制，它允许程序运行过程中再确定实例化对象，调用方法，操作属性等工作
 *          这使得程序提高了灵活度，可以更好地适应程序运行后的某些多变环节的处理
 *          反射会带来更多的系统消耗和较慢的运行效率，因此程序不能过度的依赖反射，只在必要的环节使用即可
 * @date 2021/09/15/9:31
 */
public class ReflectDemo1 {
    public static void main(String[] args) {
//        使用反射机制操作一个类时，我们需要获取该类的类对象，即：Class的一个实例，JVM中每个被加载的类都有且只有一个类对象，
//        通过类对象我们可以获取其表示的类的相关信息，比如：类名，有哪些属性，构造器
         /*
        获取一个类的类对象方式有：1.类名.class
        如：Class cls = String.class;获取String的类对象
        Class cls = int.class;获取int的类对象，基本类型只能通过这种方式获取

        2.Class.forName(String className)
        Class提供了一个静态方法forName.用于加载并获取该类的类对象，传入的时要获取类的类名，这里必须是完全类名

        如：Class cls = Class.forName("java.lang.String");

        3.使用类加载器ClassLoader获取
        */
        Class cls = String.class;
        String name = cls.getName();
        System.out.println(name);
        name = cls.getSimpleName();
        System.out.println(name);

    }
}
